const crypto_js = require("crypto-js")
// 生成随机密钥（推荐方式）
const crypto = require('crypto')
const str = "e10adc3949ba59abbe56e057f20f883e"
//
// console.log(str.length);

// MD5 加密（不可逆）
const md5Hash = crypto_js.MD5(str).toString()
console.log("MD5:", md5Hash)

// 生成 32 字节的随机密钥（AES-256）
const secretKey = crypto.randomBytes(32).toString('hex')
console.log("随机密钥:", secretKey) // 64个十六进制字符

// 从密码短语生成密钥
const passphrase = "my-very-secure-passphrase-with-special-chars-123!@#"
const derivedKey = crypto_js.PBKDF2(passphrase, "salt", {
    keySize: 256 / 32, // 256位 = 32字节
    iterations: 1000
}).toString()

// 确保长度足够（至少16字符）
// const customKey = "my-very-long-secret-key-1234567890" // 至少32字符
const customKey = "14e1b600b1fd579f47433b88e8d85291" // 至少32字符


function generateStrongKey(keyLength = 32) {
    // 生成随机字节
    return crypto.randomBytes(keyLength).toString('hex')
}

// 生成不同强度的密钥
const key128 = generateStrongKey(16)  // AES-128: 16字节
const key192 = generateStrongKey(24)  // AES-192: 24字节
const key256 = generateStrongKey(32)  // AES-256: 32字节（推荐）

console.log("AES-128 密钥:", key128)
console.log("AES-192 密钥:", key192)
console.log("AES-256 密钥:", key256)


// 推荐使用环境变量
const secretKey1 = process.env.ENCRYPTION_KEY || generateStrongKey(32)

// 或者在 .env 文件中设置：
// ENCRYPTION_KEY=your-256-bit-secret-key-hex-string
console.log(secretKey1)